/**
 * Copyright (c) 2008, Andrew Carter
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, are 
 * permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer. Redistributions in binary form must reproduce 
 * the above copyright notice, this list of conditions and the following disclaimer in 
 * the documentation and/or other materials provided with the distribution. Neither the 
 * name of Andrew Carter nor the names of contributors may be used to endorse or promote 
 * products derived from this software without specific prior written permission. 
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
 * SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package com.acarter.jmejtree;

import java.util.Vector;

import com.acarter.composabletree.ComposableTreeNode;
import com.acarter.jmejtree.treenode.CollisionGeometryTreeNode;
import com.acarter.jmejtree.treenode.DynamicPhysicsNodeTreeNode;
import com.acarter.jmejtree.treenode.StaticPhysicsNodeTreeNode;
import com.jme.scene.Controller;
import com.jme.scene.Spatial;
import com.jme.scene.state.RenderState;

/**
 * @author Carter
 *
 */
public class JMEPhysicsComposableTreeModel extends JMEComposableTreeModel {

	/**
	 * @param root
	 */
	public JMEPhysicsComposableTreeModel(Object root) {
		super(root);

		// These were just added by super(root)
		ComposableTreeNode spatial = getNodeType(Spatial.class);
		ComposableTreeNode renderstate = getNodeType(RenderState.class);
		ComposableTreeNode controller = getNodeType(Controller.class);
		
		// Adding physics tree nodes
		StaticPhysicsNodeTreeNode staticPhysicsNode = new StaticPhysicsNodeTreeNode();
		DynamicPhysicsNodeTreeNode dynamicPhysicsNode = new DynamicPhysicsNodeTreeNode();
		CollisionGeometryTreeNode collisionGeometry = new CollisionGeometryTreeNode();
		
		Vector<ComposableTreeNode> physicsNodeChildren = new Vector<ComposableTreeNode>();
		physicsNodeChildren.add(renderstate);
		physicsNodeChildren.add(controller);
		physicsNodeChildren.add(spatial);

		addNodeType(staticPhysicsNode, physicsNodeChildren);
		addNodeType(dynamicPhysicsNode, physicsNodeChildren);
		addNodeType(collisionGeometry, new Vector<ComposableTreeNode>());
	}

}
